package bite;

/**
 * Creared with IntelliJ IDEA.
 * Description:美国节日】和中国的节日不同，美国的节假日通常是选择某个月的第几个星期几这种形式，因此每一年的放假日期都不相同。具体规则如下：
 * * 1月1日：元旦
 * * 1月的第三个星期一：马丁·路德·金纪念日
 * * 2月的第三个星期一：总统节
 * * 5月的最后一个星期一：阵亡将士纪念日
 * * 7月4日：美国国庆
 * * 9月的第一个星期一：劳动节
 * * 11月的第四个星期四：感恩节
 * * 12月25日：圣诞节
 * 现在给出一个年份，请你帮忙生成当年节日的日期。
 * User:yxd
 * Date:2022-06-07
 * Time:19:31
 */
import java.util.*;
public class Day31_2 {
    //先看当前年份是不是闰年
    private static boolean isR(int y){
        return (y % 400 == 0) || ((y % 4 == 0) && (y % 100 != 0));
    }
    private static final int[] DAYS = {31,28,31,30,31,30,31,31,30,31,30,31};
    //然后再看给定年月日,这年过了多少天
    private static int nDays(int y,int m,int d){
        //初始天数
        int num = d;
        for(int i = 0;i < m - 1;i ++){
            num += DAYS[i];
        }

        if(m > 2 && isR(y)){
            //是闰年
            num ++;
        }
        return num;
    }
    //传入年月日,看从公元前1年12月31号(星期日)过来多少天,但是这里直接取mod 7的日子
    private static int days(int y,int m,int d){
        //前面的表示公元前1年到现在过去的年数365 * (y - 1) 因为这里要取余数而364可以整数7因此就只剩下1*(y- 1)
        //后面的表示闰年的个数
        //在后面表示当年的天数
        return (y - 1) + (y - 1) / 4 - (y - 1) / 100 + (y - 1) / 400 + nDays(y,m,d);
    }
    //根据年月日求出星期几
    private static int week(int y,int m,int d){
        int n = days(y,m,d) % 7;
        if(n == 0){
            n = 7;
        }
        return n;
    }

    //根据1日星期w,求出第n个星期e是几号
    private static int m1(int w,int n,int e){
        //找出天数 1号+ 多少周 + 过了几天
        return 1 + (n - 1) * 7 + (7 - w + e) % 7;
    }
    //根据6月1日是星期w,求出5月的最后一个星期一
    private static int m2(int w){
        int d = (w == 1) ? 7: w - 1;
        //把六月一日看成五月32日
        return 32 - d;
    }
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        while(input.hasNextInt()){
            int y = input.nextInt();

            /*
            1月1日：元旦
            * 1月的第三个星期一：马丁·路德·金纪念日
            * 2月的第三个星期一：总统节
            * 5月的最后一个星期一：阵亡将士纪念日
            * 7月4日：美国国庆
            * 9月的第一个星期一：劳动节
            * 11月的第四个星期四：感恩节
            * 12月25日：圣诞节
            */
            //为了保证输出的准确性就使用printf来输出
            System.out.printf("%d-01-01\n",y);
            int w = week(y,1,1);
            //%02d表示如果天数不足两位数用0补齐
            System.out.printf("%d-01-%02d\n",y,m1(w,3,1));

            w = week(y,2,1);
            System.out.printf("%d-02-%02d\n",y,m1(w,3,1));

            w = week(y,6,1);
            System.out.printf("%d-05-%02d\n",y,m2(w));
            System.out.printf("%d-07-04\n",y);
            w = week(y,9,1);
            System.out.printf("%d-09-%02d\n",y,m1(w,1,1));
            w = week(y,11,1);
            System.out.printf("%d-11-%02d\n",y,m1(w,4,4));
            System.out.printf("%d-12-25\n",y);
            System.out.println();
        }
    }
}